package com.makingTeam.config.disruptor;

import com.lmax.disruptor.RingBuffer;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * 生产者
 * user: pzy
 * date: 2025/4/28 17:51
 */
@Component
@RequiredArgsConstructor
public class DisCustomServer {

    private final RingBuffer<MessageModel> ringBuffer;

    public void onData(String message){
        // step1：通过从 环形队列中 获取 序号
        //可以把ringBuffer看做一个事件队列，那么next就是得到下面一个事件槽
        long next = ringBuffer.next();
        try {
            // step2：用序号去获取实际的事件（实际的事件就是消费者）
            MessageModel messageModel = ringBuffer.get(next);
            // step3：对事件进行操作
            messageModel.setMessage(message);
        }finally {
            // step4：发布事件
            ringBuffer.publish(next);
        }
    }

}
